Page({
  data: {
    parrotList: [] // 鹦鹉列表
  },

  onLoad() {
    this.getParrotList()
  },

  // 获取鹦鹉列表
  async getParrotList() {
    try {
      // 获取当前用户openid
      const { result: { openid } } = await wx.cloud.callFunction({
        name: 'quickstartFunctions',
        data: {
          type: 'getOpenId'
        }
      })
      
      const res = await wx.cloud.database()
        .collection('lalayingwu')
        .orderBy('sortOrder', 'asc')
        .get()
      const parrotList = res.data.map(item => ({
        ...item,
        gender: this.formatGender(item.gender),
        canEdit: item._openid === openid // 添加编辑权限字段
      }))
      this.setData({ parrotList })
    } catch (err) {
      console.error('获取鹦鹉列表失败:', err)
    }
  },

  // 跳转添加页面
  goAddParrot() {
    wx.navigateTo({
      url: '/pages/admin/parrot/edit/index'
    })
  },

  // 跳转轮播图管理
  goBannerManage() {
    console.log('轮播图管理按钮点击事件触发')
    wx.navigateTo({
      url: '/pages/admin/banner/index'
    })
  },

  // 初始化数据库
  async initDatabase() {
    try {
      // 检查管理员权限
      const isAdmin = await this.checkAdminPermission();
      if (!isAdmin) {
        wx.showToast({
          title: '只有管理员可以初始化数据库',
          icon: 'none',
          duration: 3000
        });
        return;
      }

      wx.showModal({
        title: '警告',
        content: '确定要初始化数据库吗？这将创建banners、comments、visitor_records、lalayingwu、users五个集合。',
        success: async (res) => {
          if (res.confirm) {
            wx.showLoading({ title: '初始化中...' });
            try {
              const result = await wx.cloud.callFunction({
                name: 'quickstartFunctions',
                data: { type: 'initCollections' }
              });
              
              if (result.result.success) {
                wx.showToast({
                  title: '数据库初始化成功',
                  icon: 'success',
                  duration: 3000
                });
                console.log('初始化结果:', result.result);
              } else {
                throw new Error(result.result.message || '初始化失败');
              }
            } catch (err) {
              console.error('初始化失败:', err);
              wx.showToast({
                title: `初始化失败: ${err.message}`,
                icon: 'none',
                duration: 3000
              });
            } finally {
              wx.hideLoading();
            }
          }
        }
      });
    } catch (err) {
      console.error('权限检查失败:', err);
      wx.showToast({
        title: '权限检查失败',
        icon: 'none',
        duration: 3000
      });
    }
  },

  // 检查管理员权限
  async checkAdminPermission() {
    try {
      const app = getApp();
      return await app.checkAdmin();
    } catch (err) {
      console.error('检查管理员权限失败:', err);
      return false;
    }
  },

  // 编辑鹦鹉
  editParrot(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/admin/parrot/edit/index?id=${id}`
    })
  },

  // 删除鹦鹉
  deleteParrot(e) {
    const id = e.currentTarget.dataset.id
    wx.showModal({
      title: '提示',
      content: '确定要删除这只鹦鹉吗？(将同时删除所有关联评论)',
      success: async (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '删除中' })
          try {
            // 先删除关联评论
            const deleteRes = await wx.cloud.callFunction({
              name: 'quickstartFunctions',
              data: { 
                type: 'deleteComments',
                parrotId: id 
              }
            });
            if (!deleteRes.result.success) {
              throw new Error('删除评论失败: ' + (deleteRes.result.error || '未知错误'));
            }

            // 获取鹦鹉数据
            const res = await wx.cloud.database()
              .collection('lalayingwu')
              .doc(id)
              .get()
            const { mainImage, images = [] } = res.data
            
            // 收集所有需要删除的媒体文件(图片和视频)
            const filesToDelete = []
            if (mainImage) filesToDelete.push(mainImage)
            if (images && images.length > 0) {
              filesToDelete.push(...images)
            }
            // 添加视频文件
            const { videos = [] } = res.data
            if (videos.length > 0) {
              filesToDelete.push(...videos.map(v => typeof v === 'object' ? v.url : v))
            }
            
            // 批量删除媒体文件
            if (filesToDelete.length > 0) {
              await wx.cloud.deleteFile({
                fileList: filesToDelete
              })
            }
            
            // 删除数据库记录
            await wx.cloud.database()
              .collection('lalayingwu')
              .doc(id)
              .remove()
            
            wx.showToast({ title: '删除成功' })
            this.getParrotList()
          } catch (err) {
            console.error('删除失败:', err)
            wx.showToast({ 
              title: `删除失败: ${err.errMsg || err.message}`,
              icon: 'none',
              duration: 3000
            })
          } finally {
            wx.hideLoading()
          }
        }
      }
    })
  },

  // 切换上架状态
  async togglePublish(e) {
    const id = e.currentTarget.dataset.id
    const isPublished = e.detail.value
    try {
      await wx.cloud.database()
        .collection('lalayingwu')
        .doc(id)
        .update({
          data: {
            isPublished
          }
        })
      wx.showToast({ title: '操作成功' })
    } catch (err) {
      console.error('操作失败:', err)
      wx.showToast({ title: '操作失败', icon: 'none' })
    }
  },

  // 格式化性别显示
  formatGender(gender) {
    const genderMap = {
      0: '公',
      1: '母',
      2: '未知'
    }
    return genderMap[gender] || gender
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.getParrotList().finally(() => {
      wx.stopPullDownRefresh()
    })
  }
})
